home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / HIEmbeddingPanels.idl < prev    next >
Text File  |  1996-05-01  |  4KB  |  134 lines

  1. /*
  2.      File:        HIEmbeddingPanels.idl
  3.  
  4.      Contains:    Interfaces to embedding HIPanel classes.
  5.  
  6.      Version:    Technology:    System 8.0
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1995-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16. */
  17.  
  18.  
  19.  
  20. #ifndef __HIEMBEDDINGPANELS_IDL__
  21. #define __HIEMBEDDINGPANELS_IDL__
  22.  
  23. #include <HIPanels.idl>
  24. #include <HIEmbeddingPanelTypes.idl>
  25.  
  26.  
  27. /* ########################################################################
  28.  
  29.     HIEmbeddingPanel
  30.     
  31.         A panel that has sub-panels.
  32.         
  33.    ######################################################################## */
  34. interface HIEmbeddingPanel : HIPanel
  35. {
  36.     // ***†this should be a private structure in the embedding panel implementation?
  37.     
  38. // ======================================================
  39. // Attributes
  40. // ======================================================
  41.     ItemCount    GetSubPanelCount ();
  42.     HIPanel        GetLastSelectedSubPanel ();
  43.     
  44. // ======================================================
  45. // Public Methods
  46. // ======================================================
  47.     // Programatic Initalizer
  48.     OSStatus InitEmbeddingPanel (in RefLabel identifier, 
  49.         in HIWindow window, in Rect bounds);
  50.     
  51.     // append the given panel to our list of subPanels.  Where is the
  52.     // index at which we will insert the panel.  The user
  53.     // can pass kAppendToEnd or kInsertAtFront, or a real index
  54.     // if adoptSubPanel is true, the subPanel will be disposed when
  55.     // removed or this panel is disposed; otherwise, disposal is the client's
  56.     // responsibility.
  57.     OSStatus AddSubPanel (in HIPanel subPanel, in HISubPanelIndex where,
  58.         in HIAdoptionFlags adoptionFlags, in HIFrameBindingFlags frameBindingFlags);
  59.     
  60.     // remove the given panel from our list.  If the subPanel
  61.     // was adopted when it was added, then the subPanel
  62.     // will get disposed here.
  63.     OSStatus RemoveSubPanel (in HIPanel subPanel);
  64.     
  65.     // get the subPanel at the given index (0-based) 
  66.     // return NULL if a bad index.
  67.     HIPanel GetSubPanel (in HISubPanelIndex subPanelIndex);
  68.     
  69.     // set the given panel to be our user input focus subPanel,
  70.     // or if NULL, don't have any subPanel with keyboard focus.
  71.     // return an error if there was a problem attempting to
  72.     // transfer the keyboard focus.
  73.     HIPanel    GetUserInputFocusSubPanel ();
  74.     OSStatus SetUserInputFocusSubPanel (in HIPanel subPanel);
  75.     
  76.     // return the index of the given subPanel 
  77.     HISubPanelIndex GetSubPanelIndex (in HIPanel subPanel);
  78.     
  79.     // search subPanels until one of a matching
  80.     // refLabel is found. If deep is true, recursively search all subpanels.
  81.     OSStatus GetSubPanelsFromRefLabel (in RefLabel identifier, in boolean deep, in ItemCount requestedSubPanels,
  82.                                         out ItemCount totalSubPanels, inout HIPanel thePanels);
  83.     
  84. // ======================================================
  85. // Protected Utility Methods
  86. // ======================================================
  87.     implementation {
  88.  
  89.         passthru C_h    =    "#include <HIEmbeddingPanelTypes.h>";
  90.         
  91.         passthru C_xh    =    "#include <HIEmbeddingPanelTypes.h>";
  92.         
  93.         releaseorder:                GetSubPanelCount,
  94.                                     GetUserInputFocusSubPanel,
  95.                                     GetLastSelectedSubPanel,
  96.                                     InitEmbeddingPanel,
  97.                                     AddSubPanel,
  98.                                     RemoveSubPanel,
  99.                                     GetSubPanel,
  100.                                     SetUserInputFocusSubPanel,
  101.                                     GetSubPanelIndex,
  102.                                     GetSubPanelsFromRefLabel;
  103.     };        
  104. };
  105.  
  106.  
  107.  
  108. interface HIRootPanel : HIEmbeddingPanel 
  109. {
  110. // ======================================================
  111. // Public Methods
  112. // ======================================================
  113.  
  114.     OSStatus InitRootPanel (in RefLabel identifier,
  115.         in HIWindow window);
  116.         
  117.     /* Accumulated erase region - allows for optimized erasing */
  118.     void AdjustAccumulatedEraseRgn(    in HIAccumulatorOperation    accumulatorOperation,
  119.                                     in Rect                     oldRectangle,
  120.                                     in Rect                        newRectangle);
  121.     void EraseAccumulatedEraseRgn(in CGrafPtr    targetPort);
  122.     
  123.     implementation 
  124.     {
  125.  
  126.         releaseorder:    InitRootPanel,
  127.                         AdjustAccumulatedEraseRgn,
  128.                         EraseAccumulatedEraseRgn;
  129.     };
  130. };
  131.  
  132.  
  133. #endif
  134.